//
//  NetClient.h
//  ImGuider
//
//  Created by llt on 2017/4/12.
//  Copyright © 2017年 imguider. All rights reserved.
//

#import <AFNetworking/AFNetworking.h>


/**
 定义请求方式

 - Get: get
 - Post: post
 - Put: put
 - Delete: delete
 */
typedef NS_ENUM(NSUInteger, RequestMethod) {
    Get = 0,
    Post,
    Put,// 暂未用到
    Delete,// 暂未用到
};

@interface NetClient : AFHTTPSessionManager

/**
 获取请求对象

 @return 请求对象
 */
+ (instancetype)sharedClient;

/**
 更改baseURL时调用

 @return 请求对象
 */
+ (instancetype)changeClient;
//
///**
// 请求网络数据，自动弹出错误提示
//
// @param aPath 相对路径
// @param params 参数
// @param needCache 是否需要缓存
// @param method 请求方式 RequestMethod
// @param block 返回数据 第一个参数是请求数据 第二个参数是错误信息
// */
//- (void)requestJsonDataWithPath:(NSString *)aPath
//                     withParams:(NSDictionary*)params
//                      needCache:(BOOL)needCache
//                 withMethodType:(RequestMethod)method
//                       andBlock:(void (^)(id data, NSError *error))block;

/**
  请求网络数据，手动弹出错误提示

 @param aPath 相对路径
 @param params 参数
 @param needCache 是否需要缓存
 @param method 请求方式 RequestMethod
 @param autoShowError 是否自动弹出错误提示
 @param block 返回数据 第一个参数是请求数据 第二个参数是错误信息
 */
- (void)requestJsonDataWithPath:(NSString *)aPath
                     withParams:(NSDictionary*)params
                      needCache:(BOOL)needCache
                 withMethodType:(RequestMethod)method
                  autoShowError:(BOOL)autoShowError
                       andBlock:(void (^)(id data, NSError *error))block;

/**
 请求网络数据，手动弹出错误提示 可显示进度
 
 @param aPath 相对路径
 @param params 参数
 @param needCache 是否需要缓存
 @param method 请求方式 RequestMethod
 @param autoShowError 是否自动弹出错误提示
 @param progress 进度
 @param block 返回数据 第一个参数是请求数据 第二个参数是错误信息
 */
- (void)requestJsonDataWithPath:(NSString *)aPath
                     withParams:(NSDictionary*)params
                      needCache:(BOOL)needCache
                 withMethodType:(RequestMethod)method
                  autoShowError:(BOOL)autoShowError
                       progress:(void (^)(NSProgress *error))progress
                       andBlock:(void (^)(id data, NSError *error))block;


/**
  请求网络数据，手动弹出错误提示 可重试

 @param aPath 相对路径
 @param params 参数
 @param needCache 是否需要缓存
 @param method 请求方式 RequestMethod
 @param autoShowError 是否自动弹出错误提示
 @param ntimes 重试次数
 @param block 返回数据 第一个参数是请求数据 第二个参数是错误信息
 */
- (void)requestJsonDataWithPath:(NSString *)aPath
                     withParams:(NSDictionary*)params
                      needCache:(BOOL)needCache
                 withMethodType:(RequestMethod)method
                  autoShowError:(BOOL)autoShowError
          retryingNumberOfTimes:(NSNumber *)ntimes
                       andBlock:(void (^)(id data, NSError *error))block;

/**
 上传图片

 @param imageArray 上传的图片数组
 @param urlString 上传的url
 @param block --
 */



/**
 上传图片

 @param image 图片
 @param path 路径
 @param name 名字
 @param block --
 */


/**
 上传图片
 
 @param image 图片
 @param path 路径
 @param name 名字
 @param progress 进度
 @param block --
 */
- (void)uploadImageWithImage:(UIImage *)image path:(NSString *)path name:(NSString *)name progress:(void (^)(NSProgress *error))progress andBlock:(void (^)(id data, NSError *error))block;

/**
 文件下载

 @param urlString 请求的url
 @param progress 进度
 @param block --
 @return 任务
 */

//- (NSURLSessionDownloadTask *)downLoadFileWithUrlString:(NSString *)urlString progress:(void (^)(NSProgress *progress))progress andBlock:(void (^)(id data, NSError *error))block;

@end
